package com.cloud.common.base.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;

/**
 * @author wangjian
 * @version 1.0.0.RELEASES
 * @create 2021年03月16日 3/16/21
 * @since JDK 1.8
 * Life is so short,do something to make yourself happy,such as coding
 */
public interface BaseMapper<T> {

    /**
     * 新增
     * notice：
     * 1. created_time 和 updated_time 字段可以不传，统一使用数据库 CURRENT_TIMESTAMP() 函数更新
     *
     * @param entity
     * @return
     */
    Integer insert(T entity);

    /**
     * 新增并返回主键ID
     * notice：
     * 1. created_time 和 updated_time 字段可以不传，统一使用数据库 CURRENT_TIMESTAMP() 函数更新
     *
     * @param entity
     * @return
     */
    Long insertReturnId(T entity);

    /**
     * 修改
     * notice：
     * 1. created_time 和 updated_time 字段可以不传，统一使用数据库 CURRENT_TIMESTAMP() 函数更新
     * 2. 主键必填
     * 3. 不传的字段不会覆盖为null值
     *
     * @param entity
     * @return
     */
    Integer update(T entity);

    /**
     * 根据主键查询
     *
     * @param id
     * @return
     */
    T selectById(Long id);

    /**
     * 自定义分页
     *
     * @param entity
     * @return
     */
    Page<T> pageList(@Param("ew") T entity);

}
